package br.com.pibjp.model.entity;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import br.com.pibjp.model.enumeration.EstadoCivil;

@Entity
public class Pessoa {
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private int id;
	
	private String nome;
	
	@Temporal(TemporalType.DATE)
	private Date dataNascimento;
	private String endereco;
	
	@ManyToOne(fetch=FetchType.LAZY)
	private Bairro bairro;
	
	private String cep;
	private String email;
	private String cracha;
	
	@Enumerated(EnumType.STRING)
	private EstadoCivil estadoCivil;
	
	@OneToOne(fetch=FetchType.LAZY, mappedBy="pessoa")
	private Contato parente;
	
	private String profissao;
	
	@ManyToOne(fetch=FetchType.LAZY)
	private Religiao religiao;
	
	private String igreja;
	private String ministerios;
	
	@OneToOne(fetch=FetchType.LAZY)
	private Telefone telefoneResidencial;
	@OneToOne(fetch=FetchType.LAZY)
	private Telefone celularPrincipal;
	@OneToOne(fetch=FetchType.LAZY)
	private Telefone celularOutro;
	
	@OneToOne(fetch=FetchType.LAZY)
	private Contato quemConvidou;
	
	@OneToMany(mappedBy="cursilho", fetch=FetchType.LAZY)
	private List<Participante> participantes;
	
	public Pessoa(){
		participantes = new ArrayList<Participante>();
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Date getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public Bairro getBairro() {
		return bairro;
	}

	public void setBairro(Bairro bairro) {
		this.bairro = bairro;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getCracha() {
		return cracha;
	}

	public void setCracha(String cracha) {
		this.cracha = cracha;
	}

	public EstadoCivil getEstadoCivil() {
		return estadoCivil;
	}

	public void setEstadoCivil(EstadoCivil estadoCivil) {
		this.estadoCivil = estadoCivil;
	}

	public Contato getParente() {
		return parente;
	}

	public void setParente(Contato parente) {
		this.parente = parente;
	}

	public String getProfissao() {
		return profissao;
	}

	public void setProfissao(String profissao) {
		this.profissao = profissao;
	}

	public Religiao getReligiao() {
		return religiao;
	}

	public void setReligiao(Religiao religiao) {
		this.religiao = religiao;
	}

	public String getIgreja() {
		return igreja;
	}

	public void setIgreja(String igreja) {
		this.igreja = igreja;
	}

	public String getMinisterios() {
		return ministerios;
	}

	public void setMinisterios(String ministerios) {
		this.ministerios = ministerios;
	}

	public Telefone getTelefoneResidencial() {
		return telefoneResidencial;
	}

	public void setTelefoneResidencial(Telefone telefoneResidencial) {
		this.telefoneResidencial = telefoneResidencial;
	}

	public Telefone getCelularPrincipal() {
		return celularPrincipal;
	}

	public void setCelularPrincipal(Telefone celularPrincipal) {
		this.celularPrincipal = celularPrincipal;
	}

	public Telefone getCelularOutro() {
		return celularOutro;
	}

	public void setCelularOutro(Telefone celularOutro) {
		this.celularOutro = celularOutro;
	}

	public Contato getQuemConvidou() {
		return quemConvidou;
	}

	public void setQuemConvidou(Contato quemConvidou) {
		this.quemConvidou = quemConvidou;
	}

	public List<Participante> getParticipantes() {
		return participantes;
	}

	public void setParticipantes(List<Participante> participantes) {
		this.participantes = participantes;
	}
}
